/**
 * 列表型数据 > 树形数据
 * @params
 * {list} Array       列表数据
 * {rootValue} Number 根节点的pid
 */

export const transListToTree = (list, rootValue) => {
  // 核心逻辑: 遍历列表数据，找到父级部门，递归思想（找规律），生成树形数据
  // 结论: 子级部门的pid === 父级部门的id
  const treeArr = []
  // list.forEach(item => {
  //   if (item.pid === rootValue) {
  //     treeArr.push(item)
  //     list.forEach(citem => {
  //       if (citem.pid === item.id) {
  //         item.children = item.children || []
  //         item.children.push(citem)
  //       }
  //     })
  //   }
  // })

  // 递归: 一般处理未知层级的数据
  // 特点: 函数内自己调用自己 / 要有结束条件（出口）/ 参数不能重复
  list.forEach(item => {
    if (item.pid === rootValue) {
      // 查找原则: 通过父级确定自己 > 传入父级部门的id
      const children = transListToTree(list, item.id)
      // 如果子级存在，才添加children属性（会造成级联选择器bug）
      if (children.length) item.children = children
      treeArr.push(item)
    }
  })

  return treeArr
}
